package main

import (
	"bufio"
	"fmt"
	"net"
	"os"
	"strings"
)

func main() {

	conn, err := net.Dial("tcp", "127.0.0.1:8888")
	if err != nil {
		fmt.Println("client dial err:", err)
		return
	}
	fmt.Println("conn success:", conn)

	// 功能一：客户端可以发送单行数据，然后退出
	reader := bufio.NewReader(os.Stdin) // 代表标准输入(终端)

	for {
		// 从终端读取一行用户输入，并准备发送给服务器
		line, err := reader.ReadString('\n')
		/*
			老师教的方法是将exit\n的换行符处理掉
			line2 := strings.Trim(line, "\n")
			line2 := strings.Trim(line, "\r\n")
		*/

		// 下面是判断字符串以exit开头，然后直接return结束
		if strings.HasPrefix(line, "exit") {
			_, err := conn.Write([]byte("客户端退出"))
			if err != nil {
				fmt.Println("conn.Write err:", err)
			}
			return
		}
		if err != nil {
			fmt.Println("readstring err:", err)
		}
		// 再将line发送给服务器
		n, err := conn.Write([]byte(line))
		if err != nil {
			fmt.Println("conn.Write err:", err)
		}
		fmt.Printf("客户端发送了 %d 字节的数据，并退出\n", n)
	}
}
